Load and populate the recent-items in a single pass
authorFederico Mena Quintero <federico@gnome.org>
Fri, 26 Aug 2011 16:38:11 +0000 (11:38 -0500)
committerFederico Mena Quintero <federico@gnome.org>
Fri, 26 Aug 2011 17:44:22 +0000 (12:44 -0500)
There's no real asynchronicity going on, anyway, so let's do both within
a single iteration of the idle handler.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
gtk/gtkfilechooserdefault.c

index d3b95e50b66873729c6f7bb4eb11765c680eef3f..ad79631a81b065b2ffcef2a5e25e575011f4b271 100644 (file)
@@ -9301,7 +9301,6 @@ typedef struct
 {
   GtkFileChooserDefault *impl;
   GList *items;
-  guint needs_sorting : 1;
 } RecentLoadData;
 
 static void
@@ -9396,30 +9395,18 @@ recent_idle_load (gpointer data)
   if (!impl->recent_manager)
     return FALSE;
 
-  /* first iteration: load all the items */
+  load_data->items = gtk_recent_manager_get_items (impl->recent_manager);
   if (!load_data->items)
-    {
-      load_data->items = gtk_recent_manager_get_items (impl->recent_manager);
-      if (!load_data->items)
-        return FALSE;
-
-      load_data->needs_sorting = TRUE;
+    return FALSE;
 
-      return TRUE;
-    }
-  
-  /* second iteration: MRU sorting and clamping, and populating the model */
-  if (load_data->needs_sorting)
-    {
-      if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
-       populate_model_with_recent_items (impl, load_data->items);
-      else
-       populate_model_with_folders (impl, load_data->items);
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
+    populate_model_with_recent_items (impl, load_data->items);
+  else
+    populate_model_with_folders (impl, load_data->items);
 
-      g_list_foreach (load_data->items, (GFunc) gtk_recent_info_unref, NULL);
-      g_list_free (load_data->items);
-      load_data->items = NULL;
-    }
+  g_list_foreach (load_data->items, (GFunc) gtk_recent_info_unref, NULL);
+  g_list_free (load_data->items);
+  load_data->items = NULL;
 
   return FALSE;
 }
@@ -9439,7 +9426,6 @@ recent_start_loading (GtkFileChooserDefault *impl)
   load_data = g_new (RecentLoadData, 1);
   load_data->impl = impl;
   load_data->items = NULL;
-  load_data->needs_sorting = TRUE;
 
   /* begin lazy loading the recent files into the model */
   impl->load_recent_id = gdk_threads_add_idle_full (G_PRIORITY_HIGH_IDLE + 30,